//////////////////////////////////////////////////////////////////////////

#ifndef _BOOSTSERVICE_H_
#include "boostservice.h"
#endif

//////////////////////////////////////////////////////////////////////////

#include <iostream>

//////////////////////////////////////////////////////////////////////////


// Alloc memory for static fields

// Thread
boost::thread BoostService::m_Thread;

// IO_SERVICE ptr
boost::asio::io_service* BoostService::m_IOService = NULL;


//////////////////////////////////////////////////////////////////////////


boost::asio::io_service& BoostService::GetIOService()
{
    if (!m_IOService)
        m_IOService = new boost::asio::io_service();

    return *m_IOService;
}


//////////////////////////////////////////////////////////////////////////


void BoostService::Run()
{
    m_Thread = boost::thread(&BoostService::ThreadProc);
}


////////////////////////////////////////////////////////////////////////////////


void BoostService::ThreadProc()
{
    GetIOService().run();
    std::cout << "boost::io_service finished its work. It's a FAIL!" << std::endl;
}


////////////////////////////////////////////////////////////////////////////////
